Skip to content

✨ Concurrent E2E Test Execution#2675

Open
dtfranz wants to merge 1 commit intooperator-framework:mainfrom
dtfranz:concurrent-e2e
Open

✨ Concurrent E2E Test Execution#2675
dtfranz wants to merge 1 commit intooperator-framework:mainfrom
dtfranz:concurrent-e2e

Conversation

@dtfranz
Copy link
Copy Markdown
Contributor

@dtfranz dtfranz commented Apr 27, 2026

Description

Takes advantage of changes made to isolate test runs (#2651) to execute as many tests in parallel as possible. For tests that must be run serially, the @Serial tag has been added to the beginning of relevant feature file(s).

Tests are now executed in two steps: parallel followed by serial. Since this creates two distinct test outputs, the final output has been modified to combine any step failures into one smaller output at the end, while still maintaining live output to stdout. Ideally this could be formatted into a nicer looking markdown output in the test summary that we already output, but I'm saving that for a future PR.

Reviewer Checklist

  • API Go Documentation
  • Tests: Unit Tests (and E2E Tests, if appropriate)
  • Comprehensive Commit Messages
  • Links to related GitHub Issue(s)

Copilot AI review requested due to automatic review settings April 27, 2026 05:55
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 27, 2026

Deploy Preview for olmv1 ready!

Name Link
🔨 Latest commit ed591ad
🔍 Latest deploy log https://app.netlify.com/projects/olmv1/deploys/69f44bb319e8d000088775b4
😎 Deploy Preview https://deploy-preview-2675--olmv1.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the E2E Godog test runner to take advantage of scenario isolation (from #2651) by running most scenarios in parallel while reserving tagged scenarios for a serial pass, and then printing a combined failure summary.

Changes:

  • Split E2E execution into two Godog runs: parallel (excluding @Serial) followed by serial (@Serial only), with aggregated failure output.
  • Tag TLS E2E feature(s) with @Serial so they run only in the serial phase.
  • Reduce test-experimental-e2e timeout from 20m to 10m.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
test/e2e/features_test.go Runs E2E suite in parallel + serial phases and prints an aggregated failure summary.
test/e2e/features/tls.feature Marks TLS feature as @Serial to exclude it from the parallel phase.
Makefile Adjusts experimental E2E timeout setting.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/e2e/features_test.go Outdated
Comment thread test/e2e/features_test.go Outdated
Comment thread Makefile Outdated
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 27, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.00%. Comparing base (cadb7a7) to head (4e7331b).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2675      +/-   ##
==========================================
+ Coverage   67.98%   68.00%   +0.01%     
==========================================
  Files         144      144              
  Lines       10595    10595              
==========================================
+ Hits         7203     7205       +2     
+ Misses       2870     2869       -1     
+ Partials      522      521       -1     
Flag Coverage Δ
e2e 37.48% <ø> (+0.04%) ⬆️
experimental-e2e 52.61% <ø> (-0.32%) ⬇️
unit 53.52% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@dtfranz dtfranz marked this pull request as draft April 27, 2026 06:14
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 27, 2026
@dtfranz dtfranz marked this pull request as ready for review April 27, 2026 08:18
Copilot AI review requested due to automatic review settings April 27, 2026 08:18
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 27, 2026
@openshift-ci openshift-ci Bot requested review from joelanford and tmshort April 27, 2026 08:18
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/e2e/features_test.go
Comment thread test/e2e/features_test.go Outdated
Comment thread test/e2e/features_test.go
Comment on lines +68 to +79
// Create buffers to capture output for final summary
var parallelBuf, serialBuf bytes.Buffer

parallelOpts := cliOpts
if parallelOpts.Concurrency == 1 {
// Override default concurrency value with 100; otherwise use whatever was provided by CLI
parallelOpts.Concurrency = 100
}
parallelOpts.Tags = "~@Serial"
// Write to both specified output (live to stdout, by default) and buffer (for summary)
parallelOpts.Output = io.MultiWriter(parallelOpts.Output, &parallelBuf)
// run tests concurrently
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This duplicates the entire godog console output into in-memory buffers (parallelBuf/serialBuf) via io.MultiWriter. With many scenarios (and especially at high concurrency), this can consume a lot of memory and slow down CI due to extra copying. Consider limiting what’s captured (e.g., only buffering after the "--- Failed steps:" marker, keeping only the last N lines, or writing captured output to a temp file and only reading it back on failure).

Copilot uses AI. Check for mistakes.
Copilot AI review requested due to automatic review settings April 27, 2026 23:36
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/e2e/README.md
go test test/e2e/features_test.go --godog.tags="@WebhookProviderCertManager"
```

Note that setting the tags in this way will disable the automatic test parallelization. If running in parallel with custom tags is desired, set `--godog.concurrency=100` for instance to re-enable. If this is done adding `&& ~@Serial` to the tags as well is highly recommended:
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sentence starting with “If this is done…” is grammatically awkward and a bit hard to parse. Consider rephrasing (e.g., “If you do this, adding && ~@Serial to the tag expression is highly recommended…”) to make the guidance clearer.

Suggested change
Note that setting the tags in this way will disable the automatic test parallelization. If running in parallel with custom tags is desired, set `--godog.concurrency=100` for instance to re-enable. If this is done adding `&& ~@Serial` to the tags as well is highly recommended:
Note that setting the tags in this way will disable the automatic test parallelization. If running in parallel with custom tags is desired, set `--godog.concurrency=100` for instance to re-enable. If you do this, adding `&& ~@Serial` to the tags is also highly recommended:

Copilot uses AI. Check for mistakes.
@tmshort
Copy link
Copy Markdown
Contributor

tmshort commented Apr 28, 2026

There are also tests in proxy.feature tests that we may want to be @Serial.

@dtfranz
Copy link
Copy Markdown
Contributor Author

dtfranz commented Apr 30, 2026

There are also tests in proxy.feature tests that we may want to be @Serial.

Good callout; I haven't seen that fail yet, so it might be fine to leave it, or we could just get ahead of it. I'm fine either way.

@tmshort
Copy link
Copy Markdown
Contributor

tmshort commented Apr 30, 2026

Let's get ahead of it, since the proxy tests may be disruptive.

Takes advantage of changes made to isolate test runs to execute as many tests in parallel as possible. For tests that must be run serially, the @serial tag has been added to the beginning of relevant feature file(s).

Signed-off-by: Daniel Franz <dfranz@redhat.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
@dtfranz
Copy link
Copy Markdown
Contributor Author

dtfranz commented May 1, 2026

Let's get ahead of it, since the proxy tests may be disruptive.

Done!

@tmshort
Copy link
Copy Markdown
Contributor

tmshort commented May 1, 2026

/approve

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 1, 2026
@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label May 1, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 1, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: rashmigottipati, tmshort

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants